﻿
//============================================================
// Producnt name:		JOJO.CodeMad
// Version: 			1.0.0.0
// Coded by:			JiangHao
// Auto generated at: 	2012/5/12 10:40:23
//============================================================

using System;
using System.Text;
using System.Collections.Generic;
using System.Collections;
using MyCement.Database;
using OA.Model;

namespace OA.Business
{
    public interface IProductBusinessFactory
    {
        IProductBusiness CreateProductBusiness();
    }
    public class ProductBusinessFactory : IProductBusinessFactory
    {
        public IProductBusiness CreateProductBusiness()
        {
            return new Default.ProductBLL();
        }
    }

    ///<summary>
    /// interface
    ///</summary>
    public interface IProductBusiness : IBusinessBase<Product, int>
    {
        /// <summary>
        /// 插入数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        object Insert(Product entity);
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="entity"></param>
        int UpDate(Product entity);
        /// <summary>
        /// 更新字段数据
        /// </summary>
        /// <param name="entity"></param>
        int UpDate(Hashtable entity);

        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="entity"></param>
        int Delete(Product entity);
        /// <summary>
        /// 模糊删除数据
        /// </summary>
        /// <param name="entity"></param>
        int Delete(Hashtable em);
        /// <summary>
        /// 通过主键读数据
        /// </summary>
        /// <param name="entity"></param>
        Product GetById(int ProId);
        /// <summary>
        /// 通过多主键读数据
        /// </summary>
        /// <param name="entity"></param>
        Product GetById(Hashtable em);
        /// <summary>
        ///获得所有的数据
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        IList<Product> GetAllRecord();
        /// <summary>
        /// 根据条件获得数据集
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        int GetRecordsCount(Hashtable em);
        /// <summary>
        /// 根据条件获得数据集与查询
        /// 选择top 数量，在Hashtable里加入“TopNum”键
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        IList<Product> GetRecords(Hashtable em);
        /// <summary>
        /// 根据条件获得数据集或查询
        /// 选择top 数量，在Hashtable里加入“TopNum”键
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        IList<Product> GetRecordsByOr(Hashtable em);
        /// <summary>
        /// 根据条件判断是否数据已经存在
        /// </summary>
        ///<returns>返回true数据存在，false数据不存在</returns>
        bool IsRecordHas(Hashtable em);
        /// <summary>
        /// 根据条件获得数据集并分页
        ///排序字段“SortId”与排序方式“SortType”必填
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        IList<Product> GetRecordsforPage(Hashtable em, PageStructure page);


    }
}

namespace OA.Business.Default
{

    public class ProductBLL : BusinessBase<Product, int>, IProductBusiness
    {
        #region 插入数据
        /// <summary>
        /// 插入数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public object Insert(Product entity)
        {
            return Insert("Product.Product_Insert", entity);
        }
        #endregion
        #region 更新数据
        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="entity"></param>
        public int UpDate(Product entity)
        {

            return Update("Product.Product_Update", entity);
        }

        /// <summary>
        /// 更新字段数据
        /// </summary>
        /// <param name="entity"></param>
        public int UpDate(Hashtable em)
        {

            return Update("Product.Product_UpdateHashtable", em);
        }

        #endregion
        #region 删除数据
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="entity"></param>
        public int Delete(Product entity)
        {

            return Delete("Product.Product_Delete", entity);

        }
        #endregion
        #region 删除数据
        /// <summary>
        /// 模糊删除数据
        /// </summary>
        /// <param name="entity"></param>
        public int Delete(Hashtable em)
        {

            return Delete("Product.Product_DeleteFuzzy", em);

        }
        #endregion
        #region 通过主键读数据
        /// <summary>
        /// 通过主键读数据
        /// </summary>
        /// <param name="entity"></param>
        public Product GetById(int ProId)
        {
            Hashtable em = new Hashtable();
            em.Add("ProId", ProId);
            return QueryForObject("Product.Product_GetRecords", em);
        }

        public Product GetById(Hashtable em)
        {
            return QueryForObject("Product.Product_GetRecords", em);
        }

        #endregion
        #region 获得所有的数据
        /// <summary>
        ///获得所有的数据
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        public IList<Product> GetAllRecord()
        {
            return GetRecords(null);
        }
        #endregion
        #region  根据条件获得数据集的数量
        /// <summary>
        /// 根据条件获得数据集
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        public int GetRecordsCount(Hashtable em)
        {
            return GetRecords(em).Count;
        }
        #endregion
        #region  根据条件获得数据集与查询
        /// <summary>
        /// 根据条件获得数据集与查询
        /// 选择top 数量，在Hashtable里加入“topNum”键
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        public IList<Product> GetRecords(Hashtable em)
        {
            return QueryForList("Product.Product_GetRecords", em);
        }

        #endregion
        #region  根据条件获得数据集或查询
        /// <summary>
        /// 根据条件获得数据集或查询
        /// 选择top 数量，在Hashtable里加入“topNum”键
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        public virtual IList<Product> GetRecordsByOr(Hashtable em)
        {
            return QueryForList("Product.Product_GetRecordsOr", em);
        }

        #endregion
        #region  根据条件判断是否数据已经存在
        /// <summary>
        /// 根据条件判断是否数据已经存在
        /// </summary>
        ///<returns>返回true数据存在，false数据不存在</returns>
        public bool IsRecordHas(Hashtable em)
        {
            if (GetRecords(em).Count > 0)
            {
                return true;
            }
            return false;
        }
        #endregion
        #region  根据条件获得数据集并分页
        /// <summary>
        /// 根据条件获得数据集并分页
        /// Currpage默认为：1；PageSize默认为：20；SortId默认为：ProId;SortType默认为：desc
        /// </summary>
        ///<returns>返回所以纪录集合</returns>
        public IList<Product> GetRecordsforPage(Hashtable em, PageStructure page)
        {
            if (!em.Contains("CurrPage"))
            {
                em.Add("CurrPage", 1);
            }
            if (!em.Contains("PageSize"))
            {
                em.Add("PageSize", 20);
            }
            if (!em.Contains("SortId"))
            {
                em.Add("SortId", "ProId");
            }
            if (!em.Contains("SortType"))
            {
                em.Add("SortType", "desc");
            }
            return QueryForList("Product.Product_GetRecordsAndPage", em, page);
        }
        #endregion



    }
}







